const fs = require('fs');
const path = require('path');
const readline = require('readline');
const console = require('./console');

// 创建 readline 接口实例
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('请输入文件或文件夹的完整路径 (以 / 开头): ', (inputPath) => {
    // 将输入的路径与当前工作目录结合
    const absolutePath = path.resolve(process.cwd(), 'api', inputPath.slice(1));
    const parsedPath = path.parse(absolutePath);
    console.log(absolutePath);

    // 检查路径是否包含文件名，如果没有，则认为是创建文件夹
    if (parsedPath.base === '') {
        console.log('创建文件夹...');
        createDirectory(parsedPath.dir, (err) => {
            if (err) {
                console.error(`创建文件夹失败: ${err}`);
            } else {
                console.log('文件夹创建成功！');
            }
            rl.close();
        });
    } else {
        console.log('创建文件...');
        createFile(parsedPath.dir, parsedPath.base, (err) => {
            if (err) {
                console.error(`创建文件失败: ${err}`);
            } else {
                console.log('文件创建成功！');
            }
            rl.close();
        });
    }
});

function createDirectory(directory, callback) {
    fs.mkdir(directory, { recursive: true }, (err) => {
        if (err) {
            callback(err);
        } else {
            callback(null);
        }
    });
}

function createFile(directory, fileName, callback) {
    createDirectory(directory, (err) => {
        if (err) {
            callback(err);
        } else {
            const filePath = path.join(directory, fileName + '.js');
            // 拷贝文件
            fs.copyFile(path.join(__dirname, 'api', 'default.js'), filePath, (err) => {
                if (err) {
                    callback(err);
                } else {
                    callback(null);
                }
            });
        }
    });
}